package jamirr;

import java.util.Collection;
import java.util.Map;
import java.util.Optional;

public interface TypeVariableResolver {

    Map<String, Argument<?>> getTypeVariables();

    @SuppressWarnings("rawtypes")
    default Argument[] getTypeParameters() {
        Collection<Argument<?>> values = getTypeVariables().values();
        return values.toArray(Argument.ZERO_ARGUMENTS);
    }

    default Optional<Argument<?>> getTypeVariable(String name) {
        Argument<?> argument = getTypeVariables().get(name);
        return argument != null ? Optional.of(argument) : Optional.empty();
    }
}
